// 使用 make 动态创建slice，避免了数组必须用常量做长度的麻烦
//。还可用指针直接访问底层数组，退化成普通数组操作。
package main

import "fmt"

func main() {
	s1 := []int{0, 1, 2, 3}
    p1 := &s1[2] // *int, 获取底层数组元素指针。
    *p1 += 100

	fmt.Println(s1)

	data := [][]int{
        {1, 2, 3},
        {100, 200},
        {11, 22, 33, 44},
    }
	fmt.Println(data)
	

	d := [5]struct {
        x int
    }{}

    s := d[:]
// 可直接修改 struct array/slice 成员。
    d[1].x = 10
    s[2].x = 20

    fmt.Println(d)
    fmt.Printf("%p, %p\n", &d, &d[0])
}